#!/bin/bash
# 作者：无涯有涯
# 功能：获取所有 PersistentVolume（PV）的详细信息，包括所属命名空间、PVC 名称、挂载路径、节点亲和性
# 用法：curl -sSL https://gitee.com/veryx/galaxy-tools/raw/master/1-k8s/get_pv.sh | bash

if ! command -v kubectl &> /dev/null
then
    echo "kubectl 未安装，请先安装 kubectl"
    exit 1
fi

if ! kubectl get nodes &> /dev/null
then
    echo "kubectl 集群访问失败，请检查 kubectl 是否配置正确"
    exit 1
fi

kubectl get pv -o custom-columns=" \
NS:.spec.claimRef.namespace, \
PVC:.spec.claimRef.name, \
Path:.spec.local.path, \
Node:.spec.nodeAffinity.required.nodeSelectorTerms[0].matchExpressions[0].values[0]" \
| awk 'NR==1; NR>1 {print | "sort -k1,1 -k2,2"}'